package main

import "fmt"

type Animal interface {
	ShowMe()
	Eat()
	Run()
}

type Dog struct {
	name,sex,eat,run string
	age int
}

func (dog Dog)ShowMe()  {
	fmt.Printf("My name is %s, I`m %s and %d old, I`m run %s \n", dog.name, dog.sex, dog.age, dog.run)
}

func (dog Dog)Eat()  {
	fmt.Printf("%s eat %s \n", dog.name, dog.eat)
}

func (dog Dog)Run()  {
	fmt.Printf("%s run %s \n", dog.name, dog.run)
}

func main()  {

	var Anna, Kite Animal
	Anna = &Dog{name:"Anna", sex:"girl", eat:"rice", run:"slow", age:12}
	Kite = &Dog{name:"Kite", sex:"bog", eat:"bone", run:"fast", age:8}

	Anna.ShowMe()
	Anna.Eat()
	Anna.Run()

	Kite.ShowMe()
	Kite.Eat()
	Kite.Run()
}